package com.cruise.game.mapper;

import com.cruise.game.model.entity.Agent;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 代理Mapper接口
 *
 * @author cruise
 * @date 2025-02-28
 */
@Repository
public interface AgentMapper extends BaseMapper<Agent> {

    /**
     * 通过用户ID查询代理信息
     *
     * @param userId 用户ID
     * @return 代理信息
     */
    Agent selectByUserId(@Param("userId") Long userId);

    /**
     * 通过游戏分类ID查询代理列表
     *
     * @param gameCategoryId 游戏分类ID
     * @return 代理列表
     */
    List<Agent> selectByGameCategoryId(@Param("gameCategoryId") Long gameCategoryId);

    /**
     * 更新代理状态
     *
     * @param agentId 代理ID
     * @param status 状态
     * @return 影响的行数
     */
    int updateStatus(@Param("agentId") Long agentId, @Param("status") String status);

    /**
     * 更新代理评分
     *
     * @param agentId 代理ID
     * @param rating 评分
     * @return 影响的行数
     */
    int updateRating(@Param("agentId") Long agentId, @Param("rating") java.math.BigDecimal rating);

    /**
     * 更新已完成订单数
     *
     * @param agentId 代理ID
     * @param count 增加的数量
     * @return 影响的行数
     */
    int updateOrdersCompleted(@Param("agentId") Long agentId, @Param("count") Integer count);

    /**
     * 统计代理数量
     *
     * @param status 状态（可选）
     * @return 代理数量
     */
    int countAgents(@Param("status") String status);

    /**
     * 增加已完成订单数
     *
     * @param agentId 代理ID
     * @return 更新行数
     */
    int increaseOrdersCompleted(@Param("agentId") Long agentId);
}
